#include "CharlieCube.h"

CUBE cube;

uint8_t PROGMEM pic8x8[]={
  0x3C,0x42,0xA1,0xF7,0xF7,0xA1,0x42,0x3C,
};

uint8_t PROGMEM face[]={
  0x00,0x24,0x66,0x66,0x42,0x18,0x18,0x00, // --
};
void setup()
{
  cube.init();
  cube.write(1, 'A');
  cube.write(2, 'r');
  cube.write(3, 'd');
  cube.write(4, 'u');
  cube.write(5, 'i');
  cube.write(6, 'n');
  cube.write(7, 'o');
  cube.write(0, pic8x8);
  delay(100);
  for(int i=0; i<8; i++){
    cube.write(i,face);
  }
//  cube.off();
}

void loop()
{
  int8_t x, y, z;
  int8_t addFlag;
  
//  
//  for(z=0; z<8; z++){
//    for(y=0; y<8; y++){
//      cube.write(0,y,z,1);
//      delay(2);
//    }
//    for(x=1; x<8; x++){
//      cube.write(x,7,z,1);
//      delay(2);
//    }
//  }

//  for(z=0; z<8; z++){
//    for(y=0; y<8; y++){
//      for(x=0; x<8; x++){
//        switch(z){
//          case 0:
//            if(x==0 || y==0 || y==7){
//              cube.write(x,y,z,1);
//              delay(2);
//            }
//            break;
//          case 7:
//            if(x==7 || y==0 || y==7){
//              cube.write(x,y,z,1);
//              delay(2);
//            }
//            break;
//          default:
//            if(y==0 || y==7){
//              cube.write(x,y,z,1);
//              delay(2);
//            }
//            break;
//        }
//      }
//    }
//  }

  x=0, y=0, z=0;
  addFlag = 1;
  while(1){
    cube.write(x,y,z,1);
    delay(4);
    if(addFlag == 0){
      x++;
      if(x==8){
        if(z<7){
          x=0;
          z++;
        }else{
          x=7;
          addFlag = 4;
          y--;
        }
      }
    }else if(addFlag == 1){
      y++;
      if(y==8){
        addFlag = 0;
        y=7;
        x++;
      }
    }else if(addFlag == 2){
    
    }else if(addFlag == 3){
      x--;
      if(x<0){
        if(z>0){
          x=7;
          z--;
        }else{
          break;
        }
      }
    }else if(addFlag == 4){
      y--;
      if(y<0){
        y=0;
        x--;
        addFlag = 3;
      }
    }
  }
  
  x=0, y=0, z=0;
  addFlag = 1;
  while(1){
    cube.write(x,y,z,0);
    delay(4);
    if(addFlag == 0){
      x++;
      if(x==8){
        if(z<7){
          x=0;
          z++;
        }else{
          x=7;
          addFlag = 4;
          y--;
        }
      }
    }else if(addFlag == 1){
      y++;
      if(y==8){
        addFlag = 0;
        y=7;
        x++;
      }
    }else if(addFlag == 2){
    
    }else if(addFlag == 3){
      x--;
      if(x<0){
        if(z>0){
          x=7;
          z--;
        }else{
          break;
        }
      }
    }else if(addFlag == 4){
      y--;
      if(y<0){
        y=0;
        x--;
        addFlag = 3;
      }
    }
  }
//  cube.off();
}

